package com.itheima.health.controller;

import com.itheima.health.common.MessageConst;
import com.itheima.health.entity.PageResult;
import com.itheima.health.entity.Result;
import com.itheima.health.pojo.CheckGroup;
import com.itheima.health.pojo.CheckItem;
import com.itheima.health.pojo.Setmeal;
import com.itheima.health.service.CheckGroupService;
import com.itheima.health.service.CheckItemService;
import com.itheima.health.service.SetMealService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @author ：石破天
 * @date ：Created in 2022年06月07日
 * @description ：
 * @version: 1.0
 */
@RestController
@RequestMapping("/mobile/setmeal")
@Slf4j
@Api(tags = "手机端套餐接口")
public class MobileSetMealController {

    @Autowired
    private SetMealService setMealService;

    @Autowired
    private CheckGroupService checkGroupService;

    @Autowired
    private CheckItemService checkItemService;

    /**
     * 查询所有
     */
    @GetMapping("/getSetmeal")
    public Result getSetmeal(){
        List<Setmeal> setmeals = setMealService.findAll();
        return new Result(true,MessageConst.QUERY_SETMEALLIST_SUCCESS,setmeals);
    }

    /**
     * 根据id查询所有
     */
    @GetMapping("/findById")
    public Result findById(Integer id){
//        //1.根据传入的套餐id查询 获取到一个套餐对象
//        Setmeal setmeal = setMealService.selectById(id);
//
//        //2.查询套餐id查询到关联的检查组的所有id集合
//        List<Integer> groupIds = setMealService.selectCheckGroupIdBySetmealId(id);
//        //3.新建一个检查组的类型集合
//        ArrayList<CheckGroup> checkGroups = new ArrayList<>();
//
//        //4.遍历查询到的检查组id集合，每次获取到的都是一个检查组id
//        for (Integer groupId : groupIds) {
//
//            //5.根据检查组service里的findById方法去查询到每一个检查组对象
//            CheckGroup checkGroup=checkGroupService.findById(groupId);
//
//            //8.在for循环内调用检查组的service方法 用来查询每一个检查组id关联的检查项id 返回的是一个充满检查项id的集合
//            List<Integer> itemIds = checkGroupService.findCheckItemIdsByCheckGroupId(groupId);
//
//            //9.创建n个检查项类型的集合，每一个新集合用来存放一个检查组中包含所有检查项的id
//            ArrayList<CheckItem> checkItems = new ArrayList<>();
//
//
//            //10.遍历检查项id集合，每次获取到的是一个检查项id
//            for (Integer itemId : itemIds) {
//                //11.调用检查项的service里的方法 根据id查询检查项信息  返回的是一个检查项对象
//             CheckItem checkItem = checkItemService.findById(itemId);
//             //12.将每一个查询到的检查项对象放入到新建的集合中
//             checkItems.add(checkItem);
//            }
//
//            //13.将每一个检查组里放入查询到的关联的所有检查项的集合
//            checkGroup.setCheckItems(checkItems);
//
//            //6.将获取到的检查组对象放入到新的集合中
//            checkGroups.add(checkGroup);
//        }
//
//        //7.将检查组类型的新集合写入套餐里的CheckGroups属性中
//       setmeal.setCheckGroups(checkGroups);
        Setmeal setmeal = setMealService.selectById(id);
        //14.返回
        return new Result(true,MessageConst.QUERY_SETMEAL_SUCCESS,setmeal);
    }

}
